﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Mvc;

namespace DHQGHN.PM0.Models.Admin
{
    public class GroupModel
    {
        public int GroupId { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Bạn chưa nhập tên nhóm")]
        [Remote("CheckExistGroupName", "Group", ErrorMessage = "GroupNameExist", HttpMethod = "POST", AdditionalFields = "GroupId")]
        [StringLength(50, ErrorMessage = "Độ dài tối đa là 50 ký tự")]
        [Display(Name = "Tên nhóm người dùng")]
        public string GroupName { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Bạn chưa nhập mã nhóm")]
        [Remote("CheckExistGroupCode", "Group", ErrorMessage = "GroupCodeExist", HttpMethod = "POST", AdditionalFields = "GroupId")]
        [StringLength(2, ErrorMessage = "Độ dài tối đa là 2 ký tự")]
        [Display(Name = "Mã nhóm người dùng")]
        public string GroupCode { get; set; }

        [Display(Name = "Mô tả")]
        [StringLength(150, ErrorMessage = "Độ dài tối đa là 150 ký tự")]
        public string Description { get; set; }

        //[Range(1, Int64.MaxValue, ErrorMessage = "Bạn cần chọn ứng dụng")]
        [Display(Name = "Ứng dụng")]
        [Required(AllowEmptyStrings = false, ErrorMessageResourceName = "Error_HaventPutAppNameYet", ErrorMessageResourceType = typeof(Resources.Localization))]
        public int AppId { get; set; }

        
        [Display(Name = "Loại")]
        [Required(AllowEmptyStrings = false, ErrorMessage="Bạn chưa chọn loại nhóm")]
        public string Type { get; set; }

        public int IsActive { get; set; }

        public int RecordCount { get; set; }

        public const string FIELD_GROUP_ID = "GroupId";
        public const string FIELD_NAME = "GroupName";
        public const string FIELD_CODE = "GroupCode";
        public const string FIELD_DESCRIPTIONS = "Description";
        public const string FIELD_DELETED = "IsActive";
        public const string FIELD_RECORD_COUNT = "RecordCount";
        public const string FIELD_APPID = "AppId";
        public const string FIELD_TYPE = "Type";

        public GroupModel()
        {

        }

        public GroupModel(DAL.Models.Admin.GroupModel appModel)
        {
            // TODO: Complete member initialization
            GroupId = appModel.GroupId;
            GroupCode = appModel.GroupCode;
            GroupName = appModel.GroupName;
            Description = appModel.Description;
            IsActive = appModel.IsActive;
            RecordCount = appModel.RecordCount;
            AppId = appModel.AppId;
            Type = appModel.Type;
        }

        internal DAL.Models.Admin.GroupModel toDALModel()
        {
            DAL.Models.Admin.GroupModel appModel = new DAL.Models.Admin.GroupModel
            {
                GroupId = GroupId,
                GroupCode = GroupCode,
                GroupName = GroupName,
                Description = Description,
                AppId =  AppId,
                Type = Type,
                IsActive = IsActive,
                RecordCount = RecordCount

            };
            return appModel;
        }
    }
}
